﻿
using System;
using System.Collections.Generic;
using System.Reflection;
using ClickLand.CorporacionPlaza.Comunes.Entidades;
using ClickLand.CorporacionPlaza.Comunes.Recursos;
using ClickLand.CorporacionPlaza.LogicaNegocio.Contratos;
using ClickLand.CorporacionPlaza.LogicaNegocio.Implementacion.ComandosVenta;
using Logger;


namespace ClickLand.CorporacionPlaza.LogicaNegocio.Fabricas
{
    /// <summary> Clase que hace de fabrica para los comandos que involucran la entidad venta </summary>
    public class FabricaComandosVentas
    {
        /// <summary> Metodo que obtiene una instancia de un comando que agrega o edita los datos de una venta </summary>
        /// <param name="venta">Datos a insertar</param>
        /// <returns>Comando que agrega o edita los datos de una venta</returns>
        public static IComando<bool> ObtenerComandoAgregarEditar(Venta venta)
        {

            #region Instrumentacion Entrada
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.EntrandoMetodo,MethodBase.GetCurrentMethod().Name));
            #endregion
            var retorno = new AgregarEditar(venta);
            #region Instrumentacion Salida
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.SaliendoMetodo,MethodBase.GetCurrentMethod().Name));
            #endregion
            return retorno;
        }


        /// <summary> Metodo que obtiene una instancia de un comando que consulta las ventas de un contrato </summary>
        /// <param name="contrato">Datos a consultar</param>
        /// <param name="fechaFin"> </param>
        /// <param name="fechaInicio"> </param>
        /// <returns>Comando que consulta la lista de ventas de un contrato</returns>
        public static IComando<List<Venta>> ObtenerComandoConsultarXContrato(Contrato contrato, DateTime fechaInicio, DateTime fechaFin)
        {
            #region Instrumentacion Entrada
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.EntrandoMetodo, MethodBase.GetCurrentMethod().Name));
            #endregion
            var retorno = new ConsultarXContrato(contrato,fechaInicio,fechaFin);
            #region Instrumentacion Salida
            if (Log.InfoHabilitado)
                Log.Info(string.Format(Recurso.SaliendoMetodo, MethodBase.GetCurrentMethod().Name));
            #endregion
            return retorno;
        }
    }
}
